home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 44
/
Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso
/
-in_the_mag-
/
workbench
/
netkeys
/
src
/
keyserv.e
< prev
next >
Wrap
Text File
|
1999-07-28
|
2KB
|
67 lines
-> KeyServ v1.1 by Kyzer/CSG
-> injects recieve network data into the input stream
OPT PREPROCESS,OSVERSION=37
MODULE 'devices/input', 'devices/inputevent', 'devices/pronet',
'dos/dos', 'exec/io', 'exec/nodes', 'exec/ports'
CONST NETKEYS_PORT = 10350
-> Evil-looking, isn't it.
PROC main()
DEF args:PTR TO LONG, rdargs, keyport, keyio:PTR TO iostd, devport,
netport:PTR TO mp, netio:PTR TO pnrequest, sigs, msg:PTR TO mn,
evt:inputevent, portsig
args := [0] -> default net = 0
IF rdargs := ReadArgs('NET/N', {args}, NIL)
IF keyport := CreateMsgPort()
IF keyio := CreateIORequest(keyport, SIZEOF iostd)
IF OpenDevice('input.device', 0, keyio, 0) = 0
IF devport := CreateMsgPort()
IF netio := CreateIORequest(devport, SIZEOF pnrequest)
IF netport := CreateMsgPort()
portsig := Shl(1, netport.sigbit)
netio.msgport := netport
netio.netsourceport := NETKEYS_PORT
IF OpenDevice('pronet.device', args[], netio, 0) = 0
REPEAT
sigs := Wait(SIGBREAKF_CTRL_C OR portsig)
IF sigs AND portsig
WHILE msg := GetMsg(netport)
CopyMem(msg + SIZEOF mn, evt, SIZEOF inputevent)
ReplyMsg(msg)
keyio.command := IND_WRITEEVENT
keyio.data := evt
keyio.length := SIZEOF inputevent
DoIO(keyio)
ENDWHILE
ENDIF
UNTIL sigs AND SIGBREAKF_CTRL_C
CloseDevice(netio)
ENDIF
WHILE msg := GetMsg(netport) DO ReplyMsg(netport)
DeleteMsgPort(netport)
ENDIF
DeleteIORequest(netio)
ENDIF
DeleteMsgPort(devport)
ENDIF
CloseDevice(keyio)
ENDIF
DeleteIORequest(keyio)
ENDIF
DeleteMsgPort(keyport)
ENDIF
FreeArgs(rdargs)
ENDIF
PrintFault(IoErr(), NIL)
ENDPROC